home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / littlest / littl-st.lha / st.c < prev    next >
C/C++ Source or Header  |  1993-08-10  |  2KB  |  114 lines

  1. /*
  2.     Little Smalltalk, version 3
  3.     Main Driver
  4.     written By Tim Budd, September 1988
  5.     Oregon State University
  6. */
  7. # include <stdio.h>
  8. # include "env.h"
  9. # include "memory.h"
  10. # include "names.h"
  11.  
  12. # ifdef STDWIN
  13. # ifdef LIGHTC
  14. # undef NOARGC    /* get arguments from stdwin's winitnew */
  15. extern char *about_item, *about_message;
  16. # endif
  17. # endif
  18.  
  19. int initial = 0;    /* not making initial image */
  20.  
  21. extern int objectCount();
  22.  
  23. # ifdef NOARGC
  24. main()
  25. # endif
  26. # ifndef NOARGC
  27. main(argc, argv)
  28. int argc;
  29. char **argv;
  30. # endif
  31. {
  32. FILE *fp;
  33. object firstProcess;
  34. char *p, buffer[120];
  35.  
  36. initMemoryManager();
  37.  
  38. # ifdef BSD42
  39. p = getenv("ST_LIBRARY");
  40. if (p) {
  41.     strcpy(buffer,p);
  42.     strcat(buffer,"/");
  43.     strcat(buffer,"systemImage");
  44. } else
  45.     strcpy(buffer,"systemImage");
  46. # endif
  47. # ifndef BSD42
  48. strcpy(buffer,"systemImage");
  49. # endif
  50. p = buffer;
  51.  
  52. # ifdef STDWIN
  53. /* initialize the standard windows package */
  54. # ifdef LIGHTC
  55. /* change text displayed in mac stdwin's about box */
  56. about_item = "About Little Smalltalk ...";
  57. about_message = "\rLittle Smalltalk, Version 3.05\r\r\
  58. Written by Tim Budd\rOregon State University\r\r\r";
  59. # endif
  60. winitnew(&argc, &argv);
  61. # undef NOARGC
  62. wmenusetdeflocal(1);
  63.  
  64. # ifdef LIGHTC
  65. if (argc = 1)
  66.     if (! waskync("use default initial object image?", 1))
  67.         waskfile("image file name", buffer, 120, 0);
  68. # endif
  69. # endif
  70.  
  71. # ifndef NOARGC
  72. if (argc > 1) p = argv[1];
  73. # endif
  74.  
  75. # ifdef BINREADWRITE
  76. fp = fopen(p, "rb");
  77. # endif
  78. # ifndef BINREADWRITE
  79. fp = fopen(p, "r");
  80. # endif
  81.  
  82. if (fp == NULL) {
  83.     sysError("cannot open image", p);
  84.     exit(1);
  85.     }
  86. imageRead(fp);
  87. fclose(fp);
  88. initCommonSymbols();
  89.  
  90. firstProcess = globalSymbol("systemProcess");
  91. if (firstProcess == nilobj) {
  92.     sysError("no initial process","in image");
  93.     exit(1); return 1;
  94.     }
  95.  
  96. /* execute the main system process loop repeatedly */
  97. /*debugging = true;*/
  98.  
  99. # ifndef STDWIN
  100. /* not using windowing interface, safe to print out message */
  101. printf("Little Smalltalk, Version 3.05\n");
  102. printf("Written by Tim Budd, Oregon State University\n");
  103. # endif
  104.  
  105. while (execute(firstProcess, 15000)) ;
  106.  
  107. # ifdef STDWIN
  108. wdone();
  109. # endif
  110.  
  111. /* exit and return - belt and suspenders, but it keeps lint happy */
  112. exit(0); return 0;
  113. }
  114.